Vendor-specific information may follow the version number. Its format
depends on the implementation, but a space always separates the version
number and the vendor-specific information.
All strings are null-terminated.
NNNNOOOOTTTTEEEESSSS
If an error is generated, ggggllllGGGGeeeettttSSSSttttrrrriiiinnnngggg returns 0.
The pointer returned by ggggllllGGGGeeeettttSSSSttttrrrriiiinnnngggg is only valid while the context
exists that was current when ggggllllGGGGeeeettttSSSSttttrrrriiiinnnngggg was executed. The safe thing to
do is to make a copy of the string if that context is to be destroyed.
The client and server may support different versions or extensions.
ggggllllGGGGeeeettttSSSSttttrrrriiiinnnngggg always returns a compatible version number or list of
extensions. The release number always describes the server.
EEEERRRRRRRROOOORRRRSSSS
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _n_a_m_e is not an accepted value.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if ggggllllGGGGeeeettttSSSSttttrrrriiiinnnngggg is executed between the
execution of ggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ggggllllEEEEnnnndddd.
The GGGGLLLL____RRRREEEENNNNDDDDEEEERRRREEEERRRR strings returned by ggggllllGGGGeeeettttSSSSttttrrrriiiinnnngggg for each graphics system
are listed below. Square brackets ([,]) surround optional parts of the
string, and angle brackets (<,>) surround multi-valued parts that are
always present. Neither the square brackets nor the angle brackets are
part of the string.
IIIInnnnddddyyyy and XXXXLLLL: """"NNNNEEEEWWWWPPPPOOOORRRRTTTT <<<<nnnnppppllllaaaannnneeeessss>>>>"""", where _n_p_l_a_n_e_s is the number of
configured bitplanes: 8 or 24.
PPPPeeeerrrrssssoooonnnnaaaallll IIIIrrrriiiissss: """"GGGGRRRR1111....<<<<vvvveeeerrrrssssiiiioooonnnn>>>>[[[[////22224444]]]][[[[////ZZZZ]]]][[[[////TTTTuuuurrrrbbbboooo]]]]"""", where _v_e_r_s_i_o_n is the
XXXXSSSS, XXXXZZZZ, EEEEllllaaaannnn, and EEEExxxxttttrrrreeeemmmmeeee: """"<<<<ttttyyyyppppeeee>>>>----<<<<ggggrrrraaaapppphhhhiiiiccccssss>>>>"""", where _t_y_p_e is one of
GR2, GR3, GU1 or GR2MP and _g_r_a_p_h_i_c_s is one of XS, XSM, XS24, XS24-Z,
XZ, Elan, or Extreme, corresponding to the configuration of the
graphics board.
RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee, RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX: """"<<<<ttttyyyyppppeeee>>>>////<<<<ppppiiiixxxxdddd>>>>////<<<<nnnnrrrrmmmm>>>>////<<<<tttteeeexxxxsssszzzz>>>>"""",
where _t_y_p_e is REC, RE, REV, RET, or RES, corresponding to Crimson,
Power Series, Onyx/VTX with R4400, PowerOnyx with R8000, or
Onyx/PowerOnyx with R10000; _p_i_x_d is S, M, or L, corresponding to
small, medium, or large pixel depth, respectively; _n_r_m is 1, 2, or
4, indicating the number of raster manager boards; _t_e_x_s_z is 2 or 8
indicating the size of the texture memory in megatexels. (Each
texel is 16 bits in size.)
SSSSoooolllliiiidddd IIIImmmmppppaaaacccctttt, HHHHiiiigggghhhh IIIImmmmppppaaaacccctttt and MMMMaaaaxxxxiiiimmmmuuuummmm IIIImmmmppppaaaacccctttt: """"IIIIMMMMPPPPAAAACCCCTTTT////<<<<nnnnggggeeee>>>>////<<<<nnnnrrrrssssssss>>>>////<<<<tttteeeexxxxsssszzzz>>>>"""",
where _n_g_e is 1 or 2, corresponding to the number of GEs; _n_r_s_s is 1
or 2, corresponding to the number of raster subsystem boards; and
_t_e_x_s_z is 0, 1 or 4, corresponding to the size of texture memory in